/**
 * 
 */
var express = require('express');
var request = require('superagent');
var jwt = require('jsonwebtoken');
var fs = require("fs");
var menu = require('../models/menu')

var router = express.Router();
// 登录接口
router.get('/login', function (req, res) {
  // console.log(req.query)
  request.get('https://api.weixin.qq.com/sns/jscode2session')
    .query({
      appid: 'wx3e816d32ad665452',
      secret: '21a62fdebeecbb94f891b88705613ee3',
      js_code: req.query.code,
      grant_type: 'authorization_code'
    }).then(response => {
      const result = JSON.parse(response.text);
      if (result.errcode) {
        res.json({
          code: result.errcode,
          msg: result.errmsg,
          hints: result.hints
        })
      } else {
        // 返回结果包含session_key openid
        let token = jwt.sign({ ...result, code: req.query.code }, 'mykey', {
          expiresIn: 24 * 60 * 60 // 单位s
        }); // 过期时间是1天
        writeFile('sessionkey.txt', result.session_key, function (flag) { })
        writeFile('a.txt', token, function (flag) {
          if (flag) {
            res.json({
              code: 0,
              msg: '请求成功',
              data: {
                token: token
              }
            })
          } else {
            res.json({
              code: -1,
              msg: '写入文件失败',
              data: {

              }
            })
          }
        })

      }
    });
})

// 获取用户信息存储
router.get('/saveUserInfo', function (req, res) {
  const token = req.body.token
  readFile('a.txt', function (data) {
    if (data) {
      jwt.verify(data, 'mykey', function (err, decode) {
        console.log(decode)
        // 时间失效的时候/ 伪造的token
        if (err) {
          res.json({
            code: -1,
            msg: err,
            data: {}
          })
        } else {
          if (token === data) {
            // token校验成功
            // 解密数据
            res.json({
              code: 0,
              msg: '请求成功',
              data: menu
            })
          } else {
            res.json({
              code: -1,
              msg: 'token无效',
              data: {}
            })
          }
        }
      })
    } else {
      res.json({
        code: -1,
        msg: '读取文件失败',
        data: {}
      })
    }
  })
});

// 获取菜单
router.get('/menu', function (req, res) {
  const token = req.query.token
  readFile('a.txt', function (data) {
    // console.log(data)
    if (data) {
      jwt.verify(data, 'mykey', function (err, decode) {
        console.log(decode)
        // 时间失效的时候/ 伪造的token
        if (err) {
          res.json({
            code: -1,
            msg: err,
            data: {}
          })
        } else {
          if (token === data) {
            // token校验成功
            res.json({
              code: 0,
              msg: '请求成功',
              data: menu
            })
          } else {
            res.json({
              code: -1,
              msg: 'token无效',
              data: {}
            })
          }
        }
      })
    } else {
      res.json({
        code: -1,
        msg: '读取文件失败',
        data: {}
      })
    }
  })
})



function writeFile(path, data, cb) {
  fs.writeFile(path, data, {
    flag: 'w',
    encoding: 'utf-8',
    mode: '0666'
  }, function (err) {
    if (err) {
      // console.log("文件写入失败")
      cb(0);
    } else {
      // console.log("文件写入成功");
      // console.log(data)
      cb(1);
    }

  })
}

function readFile(path, cb) {
  fs.readFile(path, {
    flag: 'r+',
    encoding: 'utf-8'
  }, function (err, data) {
    if (err) {
      // console.log("bad")
      cb('')
    } else {
      // console.log("ok");
      // console.log(data);
      cb(data)
    }
  })
}
module.exports = router;